package org.example.ssm.web;

import org.example.ssm.model.Admin;
import org.example.ssm.model.Result;
import org.example.ssm.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

@RestController/*为web层类添加的注解标签*/
@RequestMapping(path = "/api/loginCtl")/*可以为类和方法映射访问地址，类地址在项目中不能重复*/
public class LoginController {
    @Autowired
    LoginService loginService;


    /**/
/*        第二种实现方式，但是只能传入在请求头里面的数据，比第一种相对简单一些，但是也只适用于只传递少量数据
 @PostMapping(path = "login")
    public String login(String account,Integer password,@RequestHeader("token") String token){
        System.out.println(account);
        System.out.println(password);
        System.out.println(token);
        return "success";
    }*/

/*
        第一种实现方式，可以获得前端传入的数据，但是比较麻烦，适用于传入数据很少数据的情况
    @PostMapping(path = "login")
    public String login(HttpServletRequest request){
        System.out.println(request.getParameter("account"));
        System.out.println(request.getParameter("password"));
        System.out.println(request.getHeader("token"));
        return "success";
    }*/

/*
      第三种方式，是第二中方式的进阶版，可以解决第二种方式里面由于java命名格式的局限性从而导致数据无法获取的问题
      给数据传递一个别名，别名与前端的数据相同
@PostMapping(path = "login")
    public String login(@RequestParam("user-account") String account,
                        @RequestParam("user-password")Integer password,
                        @RequestHeader("user-token") String token){
        System.out.println(account);
        System.out.println(password);
        System.out.println(token);
        return "success";
    }*/

  /*
  方式4
    这是最简单的一种方式，也是我们最常用的一种方式
    但是这样写是不能直接接收到前端的json格式的数据的，还需要添加一下东西
    @PostMapping(path = "login")
    public String login(Admin admin){
        System.out.println(admin);
        return "success";
    }*/


/*   如果要接受json格式的数据我们需要两步骤
       1.导入json的包
       2.为我们的形参添加一个RequestBody的注解
* */

  @PostMapping(path = "login")
  public Result login(@RequestBody Admin admin){
      System.out.println(admin);
      loginService.login(admin);
      return new Result(200,"登陆成功",admin);
  }

  @GetMapping(path = "test")
  public String test(){
      System.out.println("test启动");
      return "success";
  }
}
